package Arrays;
import java.util.Arrays;
/*Arrays 工具类

Arrays 是针对数组的工具类，可以进行复制、排序、查找等功能，大大提高了开发人员的工作效率。

1.数组复制
copyOfRange 只需要原数组就就可以了，通过返回值，就能够得到目标数组了。
除此之外，需要注意的是 copyOfRange 的第3个参数，表示源数组的结束位置，是取不到的。
2.数组排序
Arrays.sort 升序排序
3.数组查找
Arrays类的binarySearch()方法，可以使用二分搜索法来搜索指定的数组，以获得指定对象。
该方法返回要搜索元素的索引值。binarySearch()方法提供多种重载形式，用于满足各种类型数组的查找需要*/
public class ArraysTest {
    public static void main(String[] args) {
        /*我们需要将字符串进行排序后返回新的字符串，把字符串组成数组，将数组经过有序排序，再拼接成字符串就可以了，
        而数组排序本身就有 api 支持，所以使用 Arrays.sort()，
        对数组进行排序，然后使用字符串的静态方法 String.valueOf(char[])，就能够将 char 数组转化成字符串了。
        */
        String str="I love you 1314";
        char[] in=str.toCharArray();
        Arrays.sort(in);
        String res="";
        for(int i=0;i<in.length;i++){
            res+=in[i]+"";
        }
        System.out.println(res);
        //将数组转化为字符串
        String res2=String.valueOf(in);
        System.out.println("调用String.valueOf:"+res2);

        //valueOf的另一种用法
        System.out.println("String.valueOf 还可以只截取几个元素转化为String");
        char[] arr = new char[]{'h', 'e', 'l', 'l', 'o'};
        String str1 = String.valueOf(arr);
        System.out.println(str1);
        // 注意 不包含索引3
        String str2 = String.valueOf(arr, 0, 3);
        System.out.println(str2);

        //1.从数组中截取一段元素的方法
        int arry[] = new int[]{18, 62, 68, 82, 65, 9};
        // copyOfRange(int[] original, int from, int to)
        // 第一个参数表示源数组
        // 第二个参数表示开始位置(取得到)
        // 第三个参数表示结束位置(取不到)
        int[] arr2 = Arrays.copyOfRange(arry, 0, 3);

        for (int i = 0; i < arr2.length; i++) {
            //只复制了3个元素
            System.out.print(arr2[i] + " ");
        }


    }

}
